package com.base.cn.platform.os.controller.op.article;

import com.base.cn.platform.os.common.controller.BaseController;
import com.base.cn.platform.os.common.mybatis.Pagination;
import com.base.cn.platform.os.common.utils.ObjectUtils;
import com.base.cn.platform.os.common.utils.StringUtils;
import com.base.cn.platform.os.common.utils.result.ResultUtil;
import com.base.cn.platform.os.entity.op.article.OpArticleType;
import com.base.cn.platform.os.service.op.article.OpArticleBiz;
import com.base.cn.platform.os.service.op.article.OpArticleTypeBiz;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 资讯类型Controller
 * @author zsw
 * @create 2018/5/7
 */
@RestController
@RequestMapping("/manage/op")
public class OpArticleTypeController extends BaseController {

    @Autowired
    private OpArticleTypeBiz opArticleTypeBiz;
    @Autowired
    private OpArticleBiz opArticleBiz;

    /**
     * 查询资讯列表
     * @param currentPage 当前页
     * @param articleType 资讯类型实体
     * @return
     */
    @RequestMapping("/queryArticleTypeList")
    public PageInfo<OpArticleType> queryArticleTypeList(@RequestParam(value = "currentPage", required = false, defaultValue = "1") int currentPage,
                                                        @RequestBody OpArticleType articleType) {
        Pagination articlePage = new Pagination();
        articlePage.setCurrentPage(currentPage);
        PageInfo<OpArticleType> articlePageInfo = opArticleTypeBiz.queryArticleTypeList(articlePage, articleType);
        return articlePageInfo;
    }

    /**
     * 不分页查询资讯列表
     * @param opArticleType 资讯类型实体
     * @create 2018-5-7
     * @return
     */
    @RequestMapping("/queryAllArticleType")
    public List<OpArticleType> queryAllArticleType(@RequestBody OpArticleType opArticleType){
        return opArticleTypeBiz.queryAllArticleType(opArticleType);
    }

    /**
     * 保存资讯类型
     * @param articleType 资讯类型实体
     * @return
     */
    @RequestMapping("/saveUpdateArticleType")
    public Map<String, Object> saveUpdateArticleType(@RequestBody OpArticleType articleType) {
        if (ObjectUtils.isNotEmpty(articleType)) {
            if (StringUtils.isEmpty(articleType.getTypeName()) || StringUtils.isEmpty(articleType.getTypeName().trim())) {
                return ResultUtil.ERROR("资讯类型名称不能为空");
            }
            if (articleType.getTypeName().length() > 30) {
                return ResultUtil.ERROR("资讯类型名称不能超过30个字符");
            }
            opArticleTypeBiz.saveArticleType(articleType);
            return ResultUtil.SUCCESS("保存成功");
        }
        return ResultUtil.ERROR("资讯类型保存失败");
    }

    /**
     * 删除资讯类型
     * @param articleTypeIds 资讯类型id串
     * @return
     */
    @RequestMapping("/deleteArticleType")
    public Map<String, Object> deleteArticleType(@RequestParam("articleIds") String articleTypeIds){
        if (ObjectUtils.isNotEmpty(articleTypeIds)){
            opArticleTypeBiz.deleteArticleType(articleTypeIds);
            return ResultUtil.SUCCESS("删除成功");
        }
        return ResultUtil.ERROR("删除失败");
    }

    /**
     * 根据id查询资讯类型
     * @param articleTypeId 资讯类型id
     * @return
     */
    @RequestMapping("/findArticleTypeById")
    public OpArticleType findArticleTypeById(@RequestParam("articleTypeId") BigDecimal articleTypeId){
        return opArticleTypeBiz.findArticleTypeById(articleTypeId);
    }

    /**
     * 修改资讯类型状态
     * @param articleTypeIds 资讯类型id串
     * @param status 状态：1.正常 2.禁用 3.删除
     * @return
     */
    @RequestMapping("/updateArticleTypeStatusByIds")
    public Map<String, Object> updateArticleTypeStatusByIds(@RequestParam("articleTypeIds")String articleTypeIds,
                                                        @RequestParam("status")Integer status){
        if(StringUtils.isNotEmpty(articleTypeIds) && StringUtils.isNotEmpty(articleTypeIds.trim()) && ObjectUtils.isNotEmpty(status)){
            opArticleTypeBiz.updateArticleTypeStatusByIds(articleTypeIds, status);
            if(status==1){
                opArticleBiz.updateArticleStatusByArticleTypeIds(articleTypeIds,0);
                return ResultUtil.SUCCESS("恢复成功");
            }
            if(status==2){
                opArticleBiz.updateArticleStatusByArticleTypeIds(articleTypeIds,3);
                return ResultUtil.SUCCESS("禁用成功");
            }
            if(status==3){
                opArticleBiz.updateArticleStatusByArticleTypeIds(articleTypeIds,status);
                return ResultUtil.SUCCESS("删除成功");
            }
        }
        return ResultUtil.ERROR("系统繁忙，请稍后重试");
    }

}
